﻿using Furion.Localization;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FurStudy.Core
{
    internal class GlobalizationAndLocalization
    {
        /// <summary>
        /// 在类中使用（还可以在视图中使用）
        /// </summary>
        public void TestLClass()
        {
            // 文本多语言
            var apiInterface = L.Text["API 接口"];
            var sourceCode = L.Text["源码地址"];

            // HTML标记多语言
            var name = L.Html["<b>Hello</b><i> {0}</i>", "Furion"];

            // 在Furion框架中，如果没找到对应的语言翻译文件，则自动显示字符串文本
            var promptInfo = L.Text["没找到"]; // => 如果设置为英文，但是没有文件，则直接输出“没找到”
        }

        /// <summary>
        /// 在验证特性中使用
        /// 所有验证特性已经自动支持多语言配置了，无需通过L.Text[]调用
        /// </summary>
        [Required(ErrorMessage = "必填消息")]
        public int MyProperty { get; set; }

        /// <summary>
        /// 切换语言
        /// </summary>
        public void SwitchLanguage()
        {
            // 1、Url参数方式 ?culture=en-US，此方式优先级最高，格式为：culture=区域码

            // 2、Cookies方式
            // 此方式只需要提供一个api或设置代码即可：
            L.SetCulture("en-US"); // en-US也可以通过前端传递过来，这样就可以不用'culture'参数了，可以自定义参数

            // 3、客户端浏览器语言自动切换  推荐此方式，可以自动根据
        }
    }
}
